/*
 * Copyright 2007 Dan Hodge
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package net.datajanitor.baja.data;

import java.util.Iterator;

/**
 * Represents a file on the box server. 
 */
public interface BoxFileInfo extends BoxFile {
    /**
     * Gets the id of the file.
     * @return The id
     */
    public int getId();
    
    /**
     * @return true If this is a file
     */
    public boolean isFile();
    
    /**
     * @return true If this is a directory
     */
    public boolean isDirectory();
    
    /**
     * @return true If this file or directory has been deleted
     */
    public boolean isDeleted();
    
    /**
     * Applies the visitor, first for this file and then all of its children 
     * @param visitor The visitor being applied to this tree
     */
    public void accept(BoxFileInfoVisitor visitor);
    
    /**
     * Gets an Iterator that can be used to over all of the child files and directories
     * @return An Iterator that will iterate over all of the children of this directory
     */
    public Iterator<BoxFileInfo> childIterator();
    
    /**
     * Deletes the file
     */
    public void delete();
}
